// my/my.js
import {
  AccountModel
} from '../../../models/account'

import {
  Format
} from '../../../utils/common'
const accountmodel = new AccountModel()
const app = getApp()
let last
const format = new Format()
Page({
  /**
   * 页面的初始数据
   */
  props: { // 组件传参默认值
    className: '', // 父级加入className
    verifyCodeLength: 6, // 验证码长度
    mobile: '', // 父传的手机号
    numberCode: true, // 是否是是数字键盘
    codeTime: 60, // 倒计时时间
    disabled: false, // 手机号是否可以编辑
    onSendCode: () => { }, // 点击发送验证码
    onCodeInput: () => { } // 输入验证码事件
  },
  data: {
    phone: '', // 获取的手机号
    btnName: '发送验证码', // 按钮显示名称
    canSend: false, // 是否可以发送验证吗
    hasSend: false, // 是否已经发送
    mobileValue: '', // 组件手机号的值
    mobileSafe: '', // 脱敏后的值
    txt: '', // 文本赋值
    mobileDisabled: false, // 手机号是否禁止输入
    btnDisabled: true, //提交按钮是否禁用
    code: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(app.globalData)
    // app.globalData.user.phone
    if (app.globalData.user.phone) {

      let mobilePhone = (app.globalData.user.phone).substr(0,3)+"****"+(app.globalData.user.phone).substr(7);
      this.setData({
          oldPhone: app.globalData.user.phone,
          phone: mobilePhone,
          // oldPhone: '13211111111',
          // phone: '13211111111',
      })
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    console.log('1')
  },
  /**
   * 点击清除手机号
   * @method onMobileClear
   */
  onMobileClear() {
    this.setData({
      mobileValue: '',
      mobileSafe: '',
      canSend: false,
      hasSend: false,
      btnName: '发送验证码'
    });
  },
  /**
   * 点击获取验证码触发
   * @method onSendCode
  */
  onSendCode() {
    if (this.data.canSend) {
      const {
        mobileValue
      } = this.data;
      if (mobileValue == app.globalData.user.phone) {
        my.showToast({
          type: 'none',
          content: '更改后手机号不能与原手机号一致',
          duration: 1000,
        });
        return
      }
      accountmodel.mobileVerfiCode(mobileValue).then(res => {
        console.log(res)
        if (res) {
          this.settimer();
          const pat = /(\d{3})\d*(\d{4})/;
          let str = mobileValue.replace(pat, '$1****$2');
          this.props.onSendCode({
            mobile: mobileValue
          });
          this.setData({
            mobileSafe: str,
            hasSend: true,
            txt: '已',
            mobileDisabled: true,
            canSend: false
          });
        } else {
          my.showToast({
            type: 'none',
            content: '获取验证码失败',
            duration: 1000,
          });
        }
      })
    } else {
      const {
        popoverShow,
        hasSend
      } = this.data;
      if (!hasSend && !popoverShow) {
        my.showToast({
          type: 'none',
          content: '请输入正确的手机号码',
          duration: 1000,
        });
      }
    }
  },
  /**
   * 输入验证码触发事件并传给父
   * @method onCodeInput
   * @param {*} e
   */
  onCodeInput(e) {
    console.log(e)
    if (e.detail.value.length == 6) {
      this.setData({
        verifyCode: e.detail.value,
      })
      if (this.data.mobileValue && this.data.verifyCode && this.data.idno) {
        this.setData({
          btnDisabled: false,
        })
      } else {
        this.setData({
          btnDisabled: true,
        })
      }
    } else {
      this.setData({
        btnDisabled: true
      })
    }
    // this.props.onCodeInput && this.props.onCodeInput(e);
  },
  /**
   * 正则校验 获取值 改变
   * @method onMobileInput
   * @param {*} e
   */
  onMobileInput(e) {
    const {
      value
    } = e.detail;
    const result = this.verifyTel(value);
    if (result) { // 11位数字
      this.setData({
        mobileValue: value,
        canSend: true,
        btnName: '发送验证码'
      });
    } else {
      this.setData({
        canSend: false,
        btnName: '发送验证码'
      });
    }
  },
  bindKeyInput(e) {
    console.log(e)
    if (e.currentTarget.dataset.name == 'idno') {
      if (e.detail.value.length == 18) {
        this.data[e.currentTarget.dataset.name] = e.detail.value
      } else {
        this.data[e.currentTarget.dataset.name] = ''
        this.setData({
          btnDisabled: true,
        })
      }
    }
    if (this.data.mobileValue && this.data.verifyCode && this.data.idno) {
      this.setData({
        btnDisabled: false,
      })
    } else {
      this.setData({
        btnDisabled: true,
      })
    }
  },
  /**
   * 倒计时定时器
   * @method settimer
   */
  settimer() {
    let timer;
    let codeTime = this.props.codeTime;
    const {
      disabled
    } = this.props;
    clearInterval(timer);
    timer = setInterval(() => {
      codeTime--;
      this.setData({
        btnName: `倒计时${codeTime}秒`
      });
      if (codeTime === 0) {
        clearInterval(timer);
        const box = this.data.othervalue;
        this.setData({
          btnName: '重新发送',
          // mobileDisabled: disabled ? true : false,
          canSend: true,
          txt: ''
        });
      }
    }, 1000);
  },
  /**
   * 检验手机号是否正确
   * @method verifyTel
   * @param {*} number // 手机号
   */
  verifyTel(number) { // 手机号正则校验
    const reg = /^1[3|4|5|7|8|9]\d{9}$/;
    return reg.test(number);
  },
  changePhone () {
    let idnoCheck = /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/;
    if (!(idnoCheck.test(this.data.idno))) {
      my.showToast({
        type: 'none',
        content: '请输入正确身份证号',
        duration: 1000,
      });
      return
    }
    accountmodel.updateMemberPhone(this.data.oldPhone,this.data.mobileValue,this.data.verifyCode,this.data.idno).then(res => {
      console.log(res)
      if (res && res.code == '00') {
        my.alert({
          content: '修改手机号成功',
          buttonText: '知道了',
          success: () => {
            app.globalData.user.phone = this.data.mobileValue
            my.navigateBack()
          }
        }); 
      } else {
        if(res && res.msg) {
          my.showToast({
            type: 'none',
            content: res.msg,
            duration: 1000,
          });
          return
        }
        my.showToast({
          type: 'none',
          content: '修改手机号失败',
          duration: 1000,
        });
      }
    })
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})